package com.abel.repository;

import com.abel.domain.AccountInfo;
import com.abel.domain.AuthPrincipal;
import com.abel.domain.AuthRequest;
import com.abel.repository.exception.DuplicateUserException;
import com.abel.repository.exception.InsufficientPermissionException;
import com.abel.repository.exception.InvalidUserCredentialsException;
import com.abel.repository.exception.MultipleUserNameException;
import com.abel.repository.exception.RepositoryException;

public interface AuthRepository extends BaseRepository {

	public AuthPrincipal getAuthPrincipal(AuthRequest authRequest) throws RepositoryException, InvalidUserCredentialsException, InsufficientPermissionException;
	
	public int addRegistration(AccountInfo accountInfo) throws RepositoryException, DuplicateUserException;
	
	public AuthPrincipal validateAuthCredentials(AuthRequest authRequest) throws RepositoryException, MultipleUserNameException, InvalidUserCredentialsException;
	
	public void setAuthRepository(AuthRepository authRepository);
}
